package procesador;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ProcesadorSMS {
	
	public boolean validarSMSBBVA(String sms){
		boolean esValido= false;
		if (procesarBBVA(sms).length()>0){
			esValido= true;
		}
		return esValido;
	}
	public boolean validarSMSScotiaBank(String sms){
		boolean esValido= false;
		if (procesarScotiaBank(sms).length()>0){
			esValido= true;
		}
		return esValido;
	}
	
	public Double extraerImporte(String sms){
		String importe ="0.0";
		sms = sms.replace("\n", " ");
		Pattern p = Pattern.compile("(S/.|Importe)(\\s+)(((\\d+)|((\\d{1,3})(,\\d{1,3})+))(\\.)\\d+|\\d+)");
		Matcher m = p.matcher(sms);
		while (m.find()) { 
		    importe = m.group();
		}
		return Double.parseDouble(importe.replace(",", "").replace("S/. ", "").replace("Importe ", ""));
	}

	public String procesarBBVA(String sms){
		String detalleGasto = "";
		//Efectivo Movil
		Pattern p = Pattern.compile("Efectivo Movil");
		Matcher m = p.matcher(sms);
		while (m.find()) { 
			detalleGasto = m.group();
		}
		if(detalleGasto.length()>0){
			return detalleGasto;
		}
		
		//Transferencias Terceros
		p = Pattern.compile("Transferencias a Terceros|A CUENTAS DE TERCEROS");
		m = p.matcher(sms);
		while (m.find()) { 
			detalleGasto = m.group();
		}
		if(detalleGasto.length()>0){
			return detalleGasto;
		}
		//Pagos Claro
		p = Pattern.compile("Pagos Claro");
		m = p.matcher(sms);
		while (m.find()) { 
			detalleGasto = m.group();
		}
		if(detalleGasto.length()>0){
			return detalleGasto;
		}
		//Transferencia Interbancarias
		p = Pattern.compile("Transferencia Interbancarias");
		m = p.matcher(sms);
		while (m.find()) { 
			detalleGasto = m.group();
		}
		if(detalleGasto.length()>0){
			return detalleGasto;
		}
		//Pago de Telefonia Movil - Clar
		p = Pattern.compile("(Pago de Telefonia Movil - Clar)|(PAGOS A CLARO)");
		m = p.matcher(sms);
		while (m.find()) { 
			detalleGasto = m.group();
		}
		if(detalleGasto.length()>0){
			return detalleGasto;
		}
		//Pago de Telefonia Movil - Clar
		p = Pattern.compile("TC:\\s\\*\\*");
		m = p.matcher(sms);
		while (m.find()) { 
			detalleGasto = m.group();
		}
		if(detalleGasto.length()>0){
			return detalleGasto;
		}
		return detalleGasto;
	}
	
	public String obtenerNombreEstablecimiento(String sms){
		String detalleGasto = "";
		String establecimiento = "";
		Pattern p = Pattern.compile("Efectivo Movil");
		Matcher m = p.matcher(sms);
		
		p = Pattern.compile("TC:\\s\\*\\*");
		m = p.matcher(sms);
		while (m.find()) { 
			detalleGasto = m.group();
		}
		if(detalleGasto.length()>0){
			sms = sms.replace("\n", "|");
			establecimiento = sms.split("\\|")[3];
		}
		return establecimiento;
	}
	
	public String procesarScotiaBank(String sms){
		String detalleGasto = "";
		//Dispocision de Efectivo
		Pattern p = Pattern.compile("Disposicion de Efectivo");
		Matcher m = p.matcher(sms);
		while (m.find()) { 
			detalleGasto = m.group();
		}
		if(detalleGasto.length()>0){
			return detalleGasto;
		}
		
		//Estaciones de Servicio
		p = Pattern.compile("Estaciones de Servicio");
		m = p.matcher(sms);
		while (m.find()) { 
			detalleGasto = m.group();
		}
		if(detalleGasto.length()>0){
			return detalleGasto;
		}
		
		return detalleGasto;
	}
	
	public void procesarBCP(){
		
	}
	
	public void procesarInterBank(){
		
	}
}
